/*
 * FileThread.java
 *
 * Created on 9 de marzo de 2007, 10:29 AM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.vozcliente.filethread;
import com.src.computec.vozcliente.base.constantes.ConstantesGenerales;
import com.src.computec.vozcliente.dto.DetalleVozClienteDto;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author jlperea
 */
public class FileThread implements Runnable 
{       
    public static final int FILE_GENERAL = 1;
    public static final int FILE_DETALLES = 2;
    
    private int tipoFile;
    private String fileName;
    private DetalleVozClienteDto dtoInfoExtraFile;
    private List listObjects;
    
    private ConstantesGenerales constantes = ConstantesGenerales.getInstance();
    String fS = constantes.FILE_SEPARATOR;
    
    /** Creates a new instance of FileThread */
    public FileThread(int tipoFile, String fileName, DetalleVozClienteDto dtoInfoExtraFile, List listObjects) 
    {
        this.tipoFile = tipoFile;
        this.fileName = fileName;
        this.dtoInfoExtraFile = dtoInfoExtraFile;
        this.listObjects = listObjects;
    }
    
    public void run() 
    {
       switch(tipoFile)
       {
           case FILE_GENERAL:
               createNewFileGeneralVozCliente();
               break;
           case FILE_DETALLES:
               createNewFileDetallesVozCliente();
               break;
       }

    }

    private void createNewFileGeneralVozCliente() 
    {
        if (listObjects != null && !listObjects.isEmpty()) 
        {
            File file = null;
            FileWriter fileWriter = null;

            try 
            {
                //file = new File("C:/CargueArchivos/ArchivosAlertas/" + fileName);
                file = new File(constantes.FOLDER_CARGUE_ARCHIVOS + constantes.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                fileWriter.write("CLIENTE" + fS + "PRODUCTO" + fS + "DEPARTAMENTO" + fS + "MUNICIPIO" + fS + "CENTRO POBLADO" + fS + "BARRIO" + fS + 
                                 "CANTIDAD" + fS + "ALARMA\r\n");

                Iterator iterator = listObjects.iterator();
                while (iterator.hasNext()) 
                {
                    DetalleVozClienteDto dto = (DetalleVozClienteDto) iterator.next();
                    fileWriter.write(dtoInfoExtraFile.getNombreCliente() + fS);
                    fileWriter.write(dtoInfoExtraFile.getNombreProducto() + fS);
                    fileWriter.write(dto.getNombreDepartamento() + fS);
                    fileWriter.write(dto.getNombreMunicipio() + fS);
                    fileWriter.write(dto.getNombreCentroP() + fS);
                    fileWriter.write(dto.getBarrio() + fS);
                    fileWriter.write(dto.getNumeroReclamosSitio() + fS);
                    fileWriter.write(dto.getNombreAlarma() + "\r\n");                    
                }
                fileWriter.write("\r\nNRO. REGISTROS: " + listObjects.size() + "\r\n");
                fileWriter.write("FECHA GENERACION: " + constantes.DATE_FORMAT_FILE.format(new Date()) + "\r\n");
            }
            catch (IOException e) 
            {
                System.out.println("FileThread:createNewFileGeneralVozCliente: " + e);
                e.printStackTrace();                
            }
            finally 
            {
                try 
                {
                    if (fileWriter != null) 
                    {
                        fileWriter.close();
                    }
                }
                catch (IOException e) 
                {
                    System.out.println("FileThread:createNewFileDetallesVozCliente:fileWriterClose: " + e);
                    e.printStackTrace();                    
                }
            }
        }
     }

     private void createNewFileDetallesVozCliente() 
     {
        if (listObjects != null && !listObjects.isEmpty()) 
        {
            File file = null;
            FileWriter fileWriter = null;

            try 
            {
                //file = new File("C:/CargueArchivos/ArchivosAlertas/" + fileName);
                file = new File(constantes.FOLDER_CARGUE_ARCHIVOS + constantes.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                fileWriter.write("CLIENTE" + fS + "PRODUCTO" + fS + "DEPARTAMENTO" + fS + "MUNICIPIO" + fS + "CENTRO POBLADO" + fS + "BARRIO" + fS + 
                                 "CODIGO_INTERNO_CLIENTE" + fS + "CODIGO_BARRAS" + fS + "NUMERO_ORDEN" + fS + "CONTACTO" + fS + "DESCRIPCION" + fS + "EMPRESA MENSAJERIA" + fS +
                                 "NOMBRE_GESTION" + fS + "FECHA_GESTION" + fS + "FECHA_PROCESO" + fS + 
                                 "NOMBRE_DESTINATARIO" + fS + "DIRECCION_DESTINATARIO" + fS + "TELEFONO_DESTINATARIO" + fS + "NUMERO_IDENTIFICACION" + fS + "TIENE_IMAGEN\r\n");

                Iterator iterator = listObjects.iterator();
                while (iterator.hasNext()) 
                {
                    DetalleVozClienteDto dto = (DetalleVozClienteDto) iterator.next();
                    fileWriter.write(dtoInfoExtraFile.getNombreCliente() + fS);
                    fileWriter.write(dtoInfoExtraFile.getNombreProducto() + fS);
                    fileWriter.write(dtoInfoExtraFile.getNombreDepartamento() + fS);
                    fileWriter.write(dtoInfoExtraFile.getNombreMunicipio() + fS);
                    fileWriter.write(dtoInfoExtraFile.getNombreCentroP() + fS);
                    fileWriter.write(dto.getBarrio() + fS);
                    fileWriter.write(dto.getCodigoInternoCliente() + fS);
                    fileWriter.write(dto.getCodigoBarras() + fS);
                    fileWriter.write(dto.getNumeroOrden() + fS);
                    fileWriter.write(dto.getContacto() + fS);
                    fileWriter.write(dto.getDescripcion() + fS);
                    fileWriter.write(dto.getNombreProveedor() + " - " + dto.getNombreNodo() + fS);
                    fileWriter.write(dto.getNombreGestion() + fS);
                    fileWriter.write(dto.getFechaUltimaGestion() + fS);
                    fileWriter.write(dto.getFechaProceso() + fS);
                    fileWriter.write(dto.getNombreDestinatario() + fS);
                    fileWriter.write(dto.getDireccionDestinatario() + fS);
                    fileWriter.write(dto.getTelefonoDestinatario() + fS);
                    fileWriter.write(dto.getNumeroIdentificacion() + fS);
                    fileWriter.write(dto.isHasImagenGuia()?"SI\r\n":"NO\r\n");
                }
                fileWriter.write("\r\nNRO. REGISTROS: " + listObjects.size() + "\r\n");
                fileWriter.write("FECHA GENERACION: " + constantes.DATE_FORMAT_FILE.format(new Date()) + "\r\n");
            }
            catch (IOException e) 
            {
                System.out.println("FileThread:createNewFileDetallesVozCliente: " + e);
                e.printStackTrace();                
            }
            finally 
            {
                try 
                {
                    if (fileWriter != null) 
                    {
                        fileWriter.close();
                    }
                }
                catch (IOException e) 
                {
                    System.out.println("FileThread:createNewFileDetallesVozCliente:fileWriterClose: " + e);
                    e.printStackTrace();                    
                }
            }
        }
     }
    
}
